// 引入数据库
const db = require('../db/index')

// 引入加密中间件

const bcryptjs = require('bcryptjs')

// 定义生成token时的密钥
const screctKey = require('../config')

// 定义路由处理函数

exports.login = (req, res) => {
    const userInfo = req.body
    // if (!userInfo.username || !userInfo.password) {
    //     return res.err('用户名或密码不能为空')
    //     // return res.send({state: 401, message: '用户名或密码不能为空'})
    // }
    const sql = 'select * from ev_users where username=?'
    db.query(sql, userInfo.username, (err, result) => {
        if(err) {
            return res.err(err.message)
            // return res.send({state: 400, message: err.message})
        }
        if(result.length !== 1) {
            return res.err('用户名不存在,请先注册')
            // return res.send({state: 402, message: '用户名已存在,请重新输入'})
        }
        const compareResult = bcryptjs.compareSync(userInfo.password, result[0].password)
        if (!compareResult) {
            return res.err('密码错误')
        }
        // 引入 jsonwebtoken 生成token返回给客户端
        const token = require('jsonwebtoken')
        const info = {...userInfo, password: '', user_pic: ''}
        const tokenStr = token.sign(info, screctKey.screctKey, {
            expiresIn: '10h' // 设置token有效期为10h
        })
        res.send({state: 200, message: '登录成功!', token: 'Bearer ' + tokenStr})
    })
}

exports.reguser = (req, res) => {
    console.log(req);
    const userInfo = req.body
    // if (!userInfo.username || !userInfo.password) {
    //     return res.err('用户名或密码不能为空')
    //     // return res.send({state: 401, message: '用户名或密码不能为空'})
    // }
    // 查询数据库是否已存在该用户 
    const sql = 'select * from ev_users where username=?'
    db.query(sql, userInfo.username, (err, result) => {
        if(err) {
            return res.err(err.message)
            // return res.send({state: 400, message: err.message})
        }
        if(result.length > 0) {
            return res.err('用户名已存在,请重新输入')
            // return res.send({state: 402, message: '用户名已存在,请重新输入'})
        }
        userInfo.password = bcryptjs.hashSync(userInfo.password, 10)
        const sql = 'insert into ev_users set ?'
        db.query(sql, {username: userInfo.username, password: userInfo.password, user_pic: 'https://prod-file-uploaded.oss-cn-beijing.aliyuncs.com/cv/cv_accounts/avatars/cvf6dcb3d434164cc'}, (err, result) => {
            // 判断sql语句是否执行成功
            if (err) {
                return res.err(err.message)
                // return res.send({state: 400, message: err.message})
            }
            // 判断影响行数是否为1
            if (result.affectedRows !== 1) {
                return res.err('注册用户失败，请稍后重试')
                // return res.send({state: 401, message:'注册用户失败，请稍后重试'})
            }
            res.err('注册成功!', 200)
            // res.send({state: 200, message: '注册成功!'})
        })
    })
}